home *** CD-ROM | disk | FTP | other *** search
/ Mac-Source 1994 July / Mac-Source_July_1994.iso / C and C++ / Libraries / TurboTCP 1.0.1 / TurboTCP.source / CTCPDriver.h < prev    next >
Text File  |  1993-12-10  |  2KB  |  104 lines

  1. /*
  2. ** CTCPDriver.h
  3. **
  4. **    TurboTCP support library
  5. **    TCP driver interface class
  6. **
  7. **    Copyright © 1993, FrostByte Design / Eric Scouten
  8. */
  9.  
  10.  
  11. #pragma once
  12.  
  13. #ifndef TurboTCPHeaders
  14.     #include <CObject.h>
  15.     #include <CCluster.h>
  16.     #include <MacTCPCommonTypes.h>
  17.     #include <OSUtils.h>
  18.     #include "TurboTCP.const.h"
  19. #endif
  20.  
  21. CLASS CTCPAsyncCall;
  22. CLASS CTCPDriver;
  23. CLASS CTCPStream;
  24. CLASS CTCPResolverCall;
  25.  
  26.  
  27. // global reference to TCP driver
  28.  
  29. #ifndef CTCPDriverNoGlobal
  30.     extern CTCPDriver        *gTCPDriver;                // TCP driver object (this object)
  31. #endif
  32.  
  33.  
  34. /*______________________________________________________________________
  35. **
  36. ** CTCPDriver
  37. **
  38. **    This object performs all of the housekeeping associated with the MacTCP driver.
  39. **    It keeps track of all currently open streams and handles the delayed-processing of
  40. **    MacTCP completions and notifications. It is also responsible for seeing that MacTCP is
  41. **    in a stable state (i.e. no streams left open, DNR closed) before the application quits.
  42. **
  43. */
  44.  
  45.  
  46. class CTCPDriver : public CObject {
  47.  
  48.     // TCP driver availability information
  49.  
  50. protected:
  51.     Boolean            hasMacTCP;                    // is there a MacTCP driver available?
  52.     Boolean            hasResolver;                    // is the DNR code segment available?
  53.     short            myTCPRefNum;                    // MacTCP driver’s ioRefNum
  54.     ip_addr            myIPAddress;                    // our IP address
  55.  
  56.     // list of active streams/resolvers
  57.  
  58.     CCluster            *activeStreamList;                // list of active TCP streams
  59.     CCluster            *activeResolverList;            // list of active DNR calls
  60.     
  61.     // interrupt-process queue
  62.  
  63. public:    
  64.     QHdr                asyncQueue;                    // interrupt-event queue
  65.  
  66.  
  67.     // construction/destruction
  68.  
  69. public:
  70.     void ITCPDriver (Boolean doOpenResolver);
  71.     void Dispose (void);
  72.  
  73.  
  74.     // event handling
  75.     
  76.     void ProcessNetEvents (void);
  77.  
  78.  
  79.     // ensure that TCP/DNR are present
  80.     
  81. public:    
  82.     Boolean CheckTCPDriver (void);
  83.     Boolean CheckResolver (void);
  84.  
  85.  
  86.     // get TCP driver numbers
  87.     
  88.     short GetTCPRefNum (void);
  89.     ip_addr GetIPAddr (void);
  90. protected:
  91.     void FetchIPAddr (void);
  92.  
  93.  
  94.     // tracking active streams/resolvers
  95.  
  96. public:
  97.     void RegisterActiveStream (CTCPStream *theStream);
  98.     void RegisterActiveResolver (CTCPResolverCall *theResolver);
  99.     void RemoveActiveStream (CTCPStream *theStream);
  100.     void RemoveActiveResolver (CTCPResolverCall *theResolver);
  101.     Boolean CheckResolverLimit (void);
  102.  
  103. };
  104.